package org.footballmanager.pandafootball.system.service;

import org.footballmanager.pandafootball.system.domain.FootChip;
import org.footballmanager.pandafootball.system.domain.FootPerson;
import org.footballmanager.pandafootball.system.domain.FootUser;
import org.footballmanager.pandafootball.system.form.impl.FootChipSearchForm;
import org.springframework.ui.Model;

import javax.servlet.http.HttpServletRequest;
import java.util.List;

public interface FootChipService extends BaseService<FootChip> {
    /**
     * 根据所给用户主键，随机获得一个白人
     *
     * @param userId  用户主键
     * @param request 请求
     * @return 白人名称
     */
    FootPerson randomWhiltePerson(Long userId, HttpServletRequest request);

    /**
     * 根据所给用户主键，随机获得一个普通球星
     *
     * @param userId  用户主键
     * @param request 请求
     * @return 普通球星名称
     */
    FootPerson randomGreenPerson(Long userId, HttpServletRequest request);

    /**
     * 根据所给用户主键，随机获得一个洲际球星
     *
     * @param userId  用户主键
     * @param request 请求
     * @return 洲际球星名称
     */
    FootPerson randomBluePerson(Long userId, HttpServletRequest request);

    /**
     * 根据所给用户主键，随机获得一个超级球星
     *
     * @param userId  用户主键
     * @param request 请求
     * @return 超级球星名称
     */
    FootPerson randomPurplePerson(Long userId, HttpServletRequest request);

    /**
     * 根据所给用户主键，随机获得一个顶级球星
     *
     * @param userId  用户主键
     * @param request 请求
     * @return 顶级球星名称
     */
    FootPerson randomOrangePerson(Long userId, HttpServletRequest request);

    /**
     * 根据用户找碎片数
     *
     * @param userId 用户主键
     * @return 用户碎片实体类
     */
    FootChip findChipByUserId(Long userId);

    /**
     * 获取对应类型碎片
     *
     * @param userId  用户主键
     * @param type    类型
     * @param num     数量
     * @param request 请求
     */
    void randomGetChip(Long userId, int type, int num, HttpServletRequest request);

    /**
     * 新建用户的碎片信息
     *
     * @param user    用户
     * @param request 请求
     */
    void saveNewChip(FootUser user, HttpServletRequest request);

    /**
     * 翻页方法
     *
     * @param footChipSearchForm 条件
     * @return 列表
     */
    List<FootChip> findall(FootChipSearchForm footChipSearchForm);

    /**
     * 查询
     *
     * @param entityname         实体类名
     * @param map                参数
     * @param footChipSearchForm 条件
     */
    void search(String entityname, Model map, FootChipSearchForm footChipSearchForm);

    /**
     * 根据用户主键删除碎片相关信息
     *
     * @param userId  用户主键
     * @param request 请求
     */
    void deleteByUserId(Long userId, HttpServletRequest request);
}
